<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="description" content="MapWindow is an Open Source GIS desktop application. On this page is explained how to compile MapWindow and MapWinGIS">
    <meta name="author" content="Paul Meems">
    <link rel="icon" href="../../favicon.ico">

    <title>How to compile MapWinGIS and MapWindow 5</title>

    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/mw5.css">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>

<body>

    <!-- Main jumbotron for a primary marketing message or call to action -->
    <section class="jumbotron">
        <div class="container">
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 pull-right ">
                <img class="img-responsive" src="img/LogoMapWindow_5.jpg" width="812" height="143" alt="MapWindow 5 - open source GIS Desktop Application" />
            </div>
        </div>
    </section>

    <section class="container">
        <div class="row">
            <article class="col-md-12 col-xs-12">
                <h1>MapWindow v5 - How to help?</h1>
                <p>In early May 2015 I posted the following appeal in order to try to get some new .NET developers involved in the MapWindow 5 project:</p>
                <blockquote>
                    <b>Any Unit Test developers around with some free time?</b><br />
                    I'm part of an Open Source GIS project written in .NET v4 and we are rewriting our application. A
                    s most Open Source projects we are short on volunteers and the few that are on the project don't have much experience with Unit Tests, so they are not written.
                    It would be great if an experience Unit Test developer could assist us and get us on track.
                </blockquote>
                <p>Luckilly for us several developers reacted positive.</p>
                <p>
                    Below we created a step-by-step workflow, which will help you getting started.<br />
                    MapWindow relies on MapWinGIS, which is our C++ ActiveX mapping control. MapWinGIS in its turn relies on several external libraries, like
                    <a href="http://gdal.org/?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank" title="GDAL is a translator library for raster and vector geospatial data formats">GDAL</a>,
                    <a href="http://trac.osgeo.org/geos/?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank" title="GEOS is an API of spatial predicates and functions for processing geometry">GEOS</a> and
                    <a href="https://trac.osgeo.org/proj/?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank" title="PROJ.4 is a Cartographic Projections library">Proj4</a>.
                </p>
                <p><span class="badge">Update: </span>&nbsp;We've created a <b>Release</b> branch which holds the compiled version of MapWinGIS to make it easier to just compile MapWindow 5.</p>
            </article>
        </div>

        <div class="row">
            <article class="col-md-12 col-xs-12">
                <h1>MapWindow 5 - The most user-friendly open source GIS desktop application</h1>
                <h2><span class="badge">Update: </span>Pre-build MapWinGIS binaries</h2>
                <p>
                    To make it easier for MapWindow 5 contributors we've created a Release branch on <a href="https://mapwindow5.codeplex.com/SourceControl/latest" target="_blank">mapwindow5.codeplex.com</a>.<br />
                    This Release branch holds the needed MapWinGIS binaries and the source code of MapWindow 5 which will work with that version of MapWinGIS.<br />
                    Weekly we will merge the Release branch with the current trunk and update the MapWinGIS binaries.<br />
                    Don't forget to re-register the ocx when it is updated. Run the following file as Admin: <code>D:\dev\MapWindow-v5\src\regMapWinGIS.cmd</code><br />
                    The steps mentioned below are still needed.
                </p>
                <h2>Compiling MapWindow 5</h2>
                <p>
                    <b>Step 1:</b><br />Get the source code from <a href="https://mapwindow5.codeplex.com/SourceControl/latest" target="_blank">mapwindow5.codeplex.com</a>. Check out the trunk or Release branch (see above).<br />
                    I assume you save the source code at <code>D:\dev\MapWindow-v5\</code>.<br />
                    <b>Step 2:</b><br />With MapWindow 5 we use SyncFusion's Essential Studio. They have a community license you can use.
                    <a href="https://www.syncfusion.com/products/communitylicense?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank">Claim your free license here.</a><br />
                    <b>Step 3:</b><br />Make sure you registered MapWinGIS (the ocx). Now you should have no problems compiling MapWindow with Visual Studio 2013.<br />
                    The solution file is <code>D:\dev\MapWindow-v5\src\MW5.sln</code><br />
                    We already started with some unit tests at <code>D:\dev\MapWindow-v5\test</code>. That might be a good starting point for creating new unit tests.<br />
                    GIS-data is in a seperate SVN repository: <a href="https://gisdata.codeplex.com" target="_blank">gisdata.codeplex.com</a>. This data can be freely used.
                </p>
            </article>
        </div>

        <div class="row">
            <article class="col-md-12 col-xs-12">
                <h1>MapWindow 5 - Development set up</h1>
                <p>
                    Because it might be difficult to set up your development environment when you just want to use the Release branch, we've made the following action plan:
                </p>
                <ol>
                    <li>Start with a fresh virtual machine with Win8.1.</li>
                    <li>Download and install all updates.</li>
                    <li>Download and install Visual Studio 2013 Community Edition (it's free).</li>
                    <li>Download and install all updates again.</li>
                    <li>Download and install Syncfusion WinForms (no need to get the full Essential Studio).</li>
                    <li>Run Syncfusion's Dashboard and run the tool to install all in the GAC.</li>
                    <li>Start Visual Studio, go to the Team Explorer. Clone the mapwindow5.codeplex.com GIT repository. Next switch to the Release branch.</li>
                    <li>
                        Start Windows Explorer and go to the folder you saved the MW5 source. Go to the 'src' folder and run 'regMapWinGIS.cmd' as Admin
                        (right click on the file and select 'Run as Admin'). On my first time I did get an error, but also the message that the MapWinGIS.ocx was properly installed.
                        To make sure I ran the command file again and this time no errors just success.
                    </li>
                    <li>Now finally open MW5.sln and recompile the solution. Everything should build just fine.</li>
                    <li>Make sure the MW5 project is set as startup project and run the application.</li>
                    <li>
                        At <a href="http://gisdata.codeplex.com" target="_blank">gisdata.codeplex.com</a> we've put some sample data you can use.
                        It is a svn repository, so easier to get only some of the data. <br />
                        Just drop a .shp file on the map and it will open.
                    </li>
                    <li>
                        A quick start for MapWindow Lite (the predecessor of MW5) can be found <a href="http://www.mapwindow.org/documentation/mapwindow/" target="_blank">here</a>.
                        This document might help to get started.
                    </li>
                    <li>We will try to regularly commit the latest version of MW5 and MapWinGIS.ocx to the Release branch. If this happens you need to do steps 8 and 9 again.</li>
                    <li>When you have questions you can ask them in the <a href="https://mapwindow5.codeplex.com/discussions" target="_blank">discussion tab</a>.</li>
                </ol>
            </article>
        </div>

        <div class="row">
            <article class="col-md-12 col-xs-12">
                <h1>MapWinGIS - The C++ mapping engine</h1>
                <p>
                    <span class="badge">Update: </span>&nbsp;If you are not going to work on MapWinGIS, it is recommended you use the Release branch at <a href="https://mapwindow5.codeplex.com/SourceControl/latest" target="_blank">mapwindow5.codeplex.com</a>.
                    It holds the pre-build binaries for MapWinGIS.
                </p>
                <h2>Compile MapWinGIS</h2>
                <p>
                    <b>Step 1:</b><br />Get the source code from <a href="https://mapwingis.codeplex.com/SourceControl/latest" target="_blank">mapwingis.codeplex.com</a>.
                    Most of us use <a href="https://www.atlassian.com/software/sourcetree/overview?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank">Source Tree</a> to clone the GIT repo.<br />
                    I assume you save the source code at <code>D:\dev\MapwinGIS\</code>.<br/> Don't forget to get the <code>dev494</code> branch!<br/>
                    <img src="img/SourceTree.png" alt="SoureTree settings"/><br/>
                    <b>Step 2:</b><br />Get the GDAL binaries, libraries and header files from <a href="http://www.gisinternals.com/?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click" target="_blank">gisinternals.com</a><br />
                    Download these 2 zipfiles: <a href="http://download.gisinternals.com/sdk/downloads/release-1800-gdal-mapserver.zip?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click">compiled binaries</a> and
                    <a href="http://download.gisinternals.com/sdk/downloads/release-1800-gdal-mapserver-libs.zip?utm_source=MapWindow_Codeplex&utm_medium=user_mapwindow&utm_campaign=Codeplex_click">compiled libraries and headers</a>.<br />
                    Unzip them in <code>D:\dev\MapwinGIS\support\GDAL_SDK\v120</code> in the appropriate subfolders.<br />
                    <b>Step 3:</b><br />Start Visual Studio as an administrator (because the ocx will be registered after compiling),
                    the visual studio 2013 solution file is <code>D:\dev\MapwinGIS\src\MapWinGIS.sln</code><br />
                    <b>Step 4:</b><br />Make sure the pre-build event to copy the GDAL_SDK files is enabled. Everytime you update the GDAL_SDK this needs to be enabled:<br />
                    <img class="img-responsive" src="img/BuildEvents.png" width="881" height="481" alt="MapWinGIS Build events" /><br />
                    <b>Step 5:</b><br/>Compile the solution for Release|Win32 or Debug|Win32. Visual Studio still can't handle 64Bit ActiveX controls.
                    <h4>Known errors</h4>
                    <ul>
                        <li>
                            <code>cannot open file 'mfc120.lib'</code> The solution is to download and install the
                            <a href="http://www.microsoft.com/en-us/download/details.aspx?id=40770" title="Download Multibyte MFC Library for Visual Studio 2013">Multibyte MFC Library for Visual Studio 2013</a>
                        </li>
                        <li>
                            <code>Can't register the ActiveX control</code> Most likely you didn't run Visual Studio as an Admin. If you did run VS as admin,
                            you might want to try to compile the first time with 'Register output' to No. When that compiles fine, set 'Register output' to Yes again and recompile.
                        </li>
                    </ul>
                </p>
            </article>
        </div>

    </section>

    <section class="container">
        <div class="row" style="background-color: white">
            <article class="col-md-4 col-xs-12">
                <!-- 300x250 ad tag -->
                <div data-type="ad" data-publisher="mapwindow.org" data-zone="ron" data-format="300x250" data-tags="GIS%2cMapping%2cMap%2cC%23%2cMaps%2cWMS%2cgeospatial"></div>
            </article>
            <article class="col-md-4 hidden-xs">
                <div data-type="ad" data-publisher="mapwindow.org" data-zone="ron" data-format="300x250" data-tags="open%2csource%2cdesktop%2cNET2cmicrosoft"></div>
            </article>
            <article class="col-md-4 hidden-xs">
                <div data-type="ad" data-publisher="mapwindow.org" data-zone="ron" data-format="300x250" data-tags="GIS%2csyncfusion%2cfree"></div>
            </article>
        </div>

        <hr>

        <footer class="hidden-xs">
            <div class="footer-ad" data-type="ad" data-publisher="mapwindow.org" data-zone="ron"
                 data-format="728x90" data-tags="GIS%2cMapping%2cMap%2cC%23%2cMaps%2cWMS%2cgeospatial">&nbsp;</div>
            <p>&copy; MapWindow Developers Team 2015</p>
        </footer>
    </section> <!-- /container -->
    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="http://getbootstrap.com/assets/js/ie10-viewport-bug-workaround.js"></script>

    <script type="text/javascript">
        function _dmBootstrap(file) {
            var _dma =
                document.createElement('script'); _dma.type = 'text/javascript'; _dma.async = true;
            _dma.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + file;
            (document.getElementsByTagName('head')[0] ||
            document.getElementsByTagName('body')[0]).appendChild(_dma);
        } function _dmFollowup(file)
        { if (typeof DMAds === 'undefined') _dmBootstrap('cdn2.DeveloperMedia.com/a.min.js'); }
        (function () {
            _dmBootstrap('cdn1.DeveloperMedia.com/a.min.js'); setTimeout(_dmFollowup,
            2000);
        })();</script>

    <script>
        (function (i, s, o, g, r, a, m) {
            i['GoogleAnalyticsObject'] = r; i[r] = i[r] ||
                function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a =
                s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g;
            m.parentNode.insertBefore(a, m)
        })(window, document, 'script',
            '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-5161528-17', 'auto');
        ga('require', 'displayfeatures'); ga('send', 'pageview');</script>
</body>
</html>
